package org.example.day01;

import java.util.Scanner;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO+
 * 已知火星人使用的运算符为#、$，
 * 其与地球人的等价公式如下：
 * x#y = 4*x+3*y+2
 * x$y = 2*x+y+3
 * 1、其中x、y是无符号整数
 * 2、地球人公式按C语言规则计算
 * 3、火星人公式中，#的优先级高于$，相同的运算符，按从左到右的顺序计算
 * 现有一段火星人的字符串报文，请你来翻译并计算结果。
 * @date 2024/3/11 15:22
 */
public class test017 {
    public static int func(String inputStr) {
        /**
         * 计算字符串表达式的结果
         *
         * @param inputStr 输入的字符串表达式
         * @return 字符串表达式的计算结果
         */
        if (inputStr.contains("#")) { // 如果字符串中存在字符 '#'
            int idx = inputStr.lastIndexOf("#"); // 找到最后一个字符 '#'
            String left = inputStr.substring(0, idx); // 分割左侧部分
            String right = inputStr.substring(idx + 1); // 分割右侧部分
            return 2 * func(left) + 3 * func(right) + 4; // 递归计算左右部分并返回结果
        }

        if (inputStr.contains("$")) { // 如果字符串中存在字符 '$'
            int idx = inputStr.lastIndexOf("$"); // 找到最后一个字符 '$'
            String left = inputStr.substring(0, idx); // 分割左侧部分
            String right = inputStr.substring(idx + 1); // 分割右侧部分
            return 3 * func(left) + func(right) + 2; // 递归计算左右部分并返回结果
        }

        return Integer.parseInt(inputStr); // 字符串中既不存在 '#' 又不存在 '$'，将字符串转换为整数并返回
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            String inputStr = scanner.nextLine().trim(); // 输入字符串并去除首尾空格
            if (inputStr.length() == 0) { // 如果输入字符串为空，则结束循环
                break;
            }
            System.out.println(func(inputStr)); // 调用函数进行计算并打印结果
        }
    }
}

